উদাহরণ সহ Pagination এবং Sorting

Java Technologies - স্প্রিং বুট জেপিএ (Spring Boot JPA) - Pagination এবং Sorting
352

Spring Boot JPA এর মাধ্যমে ডেটাবেস থেকে তথ্য নিয়ে আসা অনেক সময় বড় ডেটাসেট বা রেকর্ডের সংখ্যা বেশি হতে পারে, যা অনেক সময় অ্যাপ্লিকেশনের পারফরম্যান্সকে ক্ষতিগ্রস্ত করে। এই সমস্যার সমাধান করতে Pagination এবং Sorting ব্যবহার করা হয়। Spring Data JPA-তে Pagination এবং Sorting অত্যন্ত সহজভাবে এবং স্বয়ংক্রিয়ভাবে করা যায়।

এই টিউটোরিয়ালে আমরা দেখবো কিভাবে Pagination এবং Sorting ব্যবহার করা যায় Spring Boot JPA এর মাধ্যমে, উদাহরণসহ।


Pagination এবং Sorting এর ধারণা

  • Pagination: Pagination হল একটি প্রক্রিয়া যার মাধ্যমে ডেটাবেসের বড় আউটপুটকে ছোট ছোট পেইজে ভাগ করা হয়। এটি ডেটাবেস থেকে নির্দিষ্ট পরিমাণ রেকর্ড একটি পেইজে আনার জন্য ব্যবহৃত হয়, যাতে অ্যাপ্লিকেশন পারফরম্যান্স উন্নত হয় এবং ব্যবহারকারী একটি পেইজে ছোট পরিসরের ডেটা দেখতে পারে।
  • Sorting: Sorting হল ডেটা শৃঙ্খলা অনুযায়ী সাজানোর প্রক্রিয়া। এটি ব্যবহারকারীর জন্য ডেটাকে আরো সহজে পড়ার উপযোগী করে তোলে।

Spring Data JPA-তে Pageable এবং Sort ইন্টারফেস ব্যবহার করে সহজেই Pagination এবং Sorting করা যায়।


Spring Boot JPA তে Pagination এবং Sorting এর উদাহরণ

১. Entity ক্লাস তৈরি করা

প্রথমে আমরা একটি Product Entity তৈরি করবো, যেটি ডেটাবেসের একটি টেবিলের প্রতিনিধিত্ব করবে।

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
    private double price;

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}

এখানে Product Entity তৈরি করা হয়েছে যা ডেটাবেসে id, name, এবং price কলাম সম্বলিত একটি টেবিলের প্রতিনিধিত্ব করে।


২. JpaRepository তৈরি করা

JpaRepository ইন্টারফেস ব্যবহার করে CRUD অপারেশন এবং Pagination/Sorting করা যাবে। Spring Data JPA এটি স্বয়ংক্রিয়ভাবে বাস্তবায়ন করবে।

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {

    // Pagination এবং Sorting সহ ফাইন্ড
    Page<Product> findAll(Pageable pageable);

    // Price অনুযায়ী Sorting করা
    List<Product> findAll(Sort sort);
}

এখানে:

  • findAll(Pageable pageable): এটি Pagination সহ সমস্ত Product ফেচ করবে।
  • findAll(Sort sort): এটি Sorting সহ সমস্ত Product ফেচ করবে।

৩. Service Layer তৈরি করা

ProductService ক্লাসে আমরা Pagination এবং Sorting অপারেশনগুলিকে ব্যবহার করবো।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    // Pagination সহ Product ফেচ করা
    public Page<Product> getPaginatedProducts(int page, int size) {
        Pageable pageable = PageRequest.of(page, size);  // page, size অনুযায়ী Pageable তৈরি
        return productRepository.findAll(pageable);
    }

    // Sorting সহ Product ফেচ করা
    public List<Product> getSortedProducts(String sortBy) {
        Sort sort = Sort.by(sortBy).ascending();  // Sorting তৈরি করা
        return productRepository.findAll(sort);
    }
}

এখানে:

  • getPaginatedProducts(int page, int size) পদ্ধতিটি Pagination সহ ডেটা ফেচ করার জন্য ব্যবহৃত হয়।
  • getSortedProducts(String sortBy) পদ্ধতিটি Sorting সহ ডেটা ফেচ করার জন্য ব্যবহৃত হয়, যেখানে sortBy প্যারামিটার দিয়ে আপনি যে কলাম দিয়ে সোর্ট করতে চান সেটি নির্ধারণ করতে পারবেন (যেমন "name" বা "price" ইত্যাদি)।

৪. Controller Layer তৈরি করা

ProductController ক্লাসে আমরা REST API তৈরি করবো যা Pagination এবং Sorting অপারেশন সম্পাদন করবে।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/products")
public class ProductController {

    @Autowired
    private ProductService productService;

    // Pagination সহ Product রিটার্ন করা
    @GetMapping("/paginated")
    public Page<Product> getPaginatedProducts(@RequestParam int page, @RequestParam int size) {
        return productService.getPaginatedProducts(page, size);
    }

    // Sorting সহ Product রিটার্ন করা
    @GetMapping("/sorted")
    public List<Product> getSortedProducts(@RequestParam String sortBy) {
        return productService.getSortedProducts(sortBy);
    }
}

এখানে:

  • /api/products/paginated API endpoint-এ আপনি page এবং size প্যারামিটার দিয়ে Pagination করতে পারবেন।
  • /api/products/sorted API endpoint-এ আপনি sortBy প্যারামিটার দিয়ে কোন কলাম দিয়ে Sorting করতে চান তা নির্ধারণ করতে পারবেন।

৫. Spring Boot অ্যাপ্লিকেশন চালানো

Spring Boot অ্যাপ্লিকেশন চালানোর জন্য @SpringBootApplication অ্যানোটেশন ব্যবহার করা হয়।

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootJpaApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootJpaApplication.class, args);
    }
}

এখানে @SpringBootApplication দ্বারা Spring Boot অ্যাপ্লিকেশন রান করবে এবং ProductController এ রুটটি এক্সপোজ করা হবে।


Pagination এবং Sorting ব্যবহারের সুবিধা

  1. Performance Improvement: Pagination ডেটার বড় পরিমাণের ক্ষেত্রে পারফরম্যান্স উন্নত করতে সহায়ক, কারণ এটি শুধুমাত্র নির্দিষ্ট পরিমাণ ডেটা একবারে লোড করে।
  2. Efficient Data Handling: Sorting এবং Pagination ডেটা টেবিলের মধ্যে দ্রুত অনুসন্ধান এবং সুশৃঙ্খল ডেটা রিটার্নে সহায়ক, যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।
  3. User-Friendly: Pagination ব্যবহার করে ব্যবহারকারীরা একটি নির্দিষ্ট সংখ্যক ডেটা দেখতে পারে, যা ডেটার দৃশ্যমানতা এবং এক্সেস সহজ করে।
  4. Customization: Sorting পদ্ধতি দ্বারা ব্যবহারকারীরা তাদের পছন্দ অনুযায়ী ডেটা সাজাতে পারে, যা অ্যাপ্লিকেশনটির নমনীয়তা বৃদ্ধি করে।

উপসংহার

Spring Boot JPA এবং Pagination এবং Sorting ব্যবহারের মাধ্যমে ডেটাবেস অপারেশনগুলিকে আরও কার্যকর এবং পারফরম্যান্স-অপ্টিমাইজড করা যায়। Pageable এবং Sort ইন্টারফেস ব্যবহার করে আপনি ডেটাবেস থেকে সীমিত পরিমাণ ডেটা এবং প্রয়োজনীয়ভাবে সাজানো ডেটা পেতে পারেন। এটি Spring Data JPA ব্যবহার করে ডেটা অ্যাক্সেসের সুবিধা দেয় এবং ব্যবহারকারী অভিজ্ঞতা বৃদ্ধি করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...